package com.hqyj.javaSpringBoot.modules.test.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hqyj.javaSpringBoot.modules.common.entity.AbstractEntity;

import javax.persistence.*;

/**
 * @Entity 代表实体bean，自动生成表时自动扫描带有此注解的类，将类变成表
 * @Table 指定表的相关信息
 *      name：表名（若不写自动生成小写表名）
 *      （报红只是idea的报错，不会影响代码的运行，可以通过设置idea修复）
 *
 */
@Entity
@Table(name = "test_card")
public class Card extends AbstractEntity {
    @Column(length = 50)
    private String cardNo;

    /**
     * OneToOne：一对一关系中，有外键方使用 JoinColumn 注解，另一方使用 mappedBy 属性（可选）
     * cascade：联级操作
     * fetch：加载数据策略
     * JsonIgnore：不序列化该字段，避免无限递归
     */
    @OneToOne(mappedBy = "studentCard", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonIgnore
    private Student student;

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public String getCardNo() {
        return cardNo;
    }

    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }
}
